{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "18f0531c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import scipy\n",
    "import numpy as np\n",
    "import sympy\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "26516e18",
   "metadata": {},
   "outputs": [],
   "source": [
    "x0, y0 = sympy.symbols('x y')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "39a9ad0e",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.array([1,2,3,4,5,6])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "aa46fda0",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.arange(1,6, 0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "f99c3b91",
   "metadata": {},
   "outputs": [],
   "source": [
    "y = np.array([1,3,5,114514,7,9])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "649f97cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Poly}{\\left( -4240 x^{3} + 36350 x^{2} - 73910 x + 38166, x, domain=\\mathbb{Z} \\right)}$"
      ],
      "text/plain": [
       "Poly(-4240*x**3 + 36350*x**2 - 73910*x + 38166, x, domain='ZZ')"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "po = np.polyfit(X, y,3).astype(int)\n",
    "sympy.Poly(po, x0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "319931ba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ -4240.96296296,  36350.8968254 , -73910.85449736,  38166.66666667])"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f2 = scipy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "40496b37",
   "metadata": {},
   "outputs": [],
   "source": [
    "f0 = scipy.interpolate.interp1d(X, y, kind='linear')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "37c49b2f",
   "metadata": {},
   "outputs": [],
   "source": [
    "f1 = scipy.interpolate.lagrange(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "203b93df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "114513.99999999674"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f1(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "d134f589",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f7822886310>]"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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hEvAxSI/P58tW7awZcsWALKzs9myZQt79+4NdrZzur5VLaaNaE9N16m3O2q6kpk2oj3Xt6oV9kwiIiLlmcOyLOvcp/1k5cqVXHnllaeNjx49mldfffWc7/d4PLhcLtxuN6mpqYF89FmdceVNXakQEREJmvP9/R3wMxZXXHEFAXaRkIuPc2hKqYiISASI2mcsREREJPKoWIiIiEjQqFiIiIhI0KhYiIiISNCoWIiIiEjQqFiIiIhI0KhYiIiISNCoWIiIiEjQqFiIiIhI0IR8d9P/9eOqnR6PJ9wfLSIiIqX04+/tc62+HfZikZeXB0BGRka4P1pERETKKC8vD5fLddY/D3gTsrLy+/3s37+flJQUHI7gbRTm8XjIyMggJycnaJubyen0PYePvuvw0PccHvqewyOU37NlWeTl5VG7dm3i4s7+JEXYr1jExcVRt27dkP381NRU/UsbBvqew0ffdXjoew4Pfc/hEarv+ZeuVPxID2+KiIhI0KhYiIiISNDETLFwOp08+uijOJ1O01Fimr7n8NF3HR76nsND33N4RML3HPaHN0VERCR2xcwVCxERETFPxUJERESCRsVCREREgkbFQkRERIIm6ovFhx9+SJ8+fahduzYOh4MlS5aYjhSTMjMz6dixIykpKaSnp9OvXz++/PJL07FizrRp02jTps3JxW26du3Ku+++azpWzMvMzMThcHDfffeZjhJTHnvsMRwOxymvmjVrmo4Vs7799ltGjBhBtWrVqFixIhdffDGbNm0Ke46oLxYFBQW0bduW559/3nSUmLZq1SrGjx/PunXrWLFiBSUlJVx77bUUFBSYjhZT6tatyxNPPMHGjRvZuHEjV111FX379mX79u2mo8WsDRs2MH36dNq0aWM6Skxq2bIlubm5J19bt241HSkmHTlyhO7du5OYmMi7777Ljh07+Mtf/kKVKlXCniXsS3oHW69evejVq5fpGDFv2bJlpxzPmDGD9PR0Nm3axGWXXWYoVezp06fPKcePP/4406ZNY926dbRs2dJQqtiVn5/P8OHDefnll5kyZYrpODEpISFBVynC4MknnyQjI4MZM2acHGvQoIGRLFF/xULMcLvdAKSlpRlOErt8Ph/z58+noKCArl27mo4Tk8aPH0/v3r3p2bOn6Sgxa9euXdSuXZuGDRsyZMgQdu/ebTpSTHrrrbfo0KEDgwYNIj09nXbt2vHyyy8byaJiIQGzLIuJEyfSo0cPWrVqZTpOzNm6dSuVK1fG6XQyduxYFi9eTIsWLUzHijnz589n8+bNZGZmmo4Sszp37sysWbNYvnw5L7/8MgcOHKBbt2788MMPpqPFnN27dzNt2jSaNGnC8uXLGTt2LPfeey+zZs0Ke5aovxUi4Xf33Xfz2WefsXr1atNRYlKzZs3YsmULR48eZeHChYwePZpVq1apXARRTk4OEyZM4L333iM5Odl0nJj189vUrVu3pmvXrjRq1IiZM2cyceJEg8lij9/vp0OHDkydOhWAdu3asX37dqZNm8aoUaPCmkVXLCQg99xzD2+99RYffPABdevWNR0nJiUlJdG4cWM6dOhAZmYmbdu25ZlnnjEdK6Zs2rSJgwcPcskll5CQkEBCQgKrVq3i2WefJSEhAZ/PZzpiTKpUqRKtW7dm165dpqPEnFq1ap32l4+LLrqIvXv3hj2LrljIebEsi3vuuYfFixezcuVKGjZsaDpSuWFZFl6v13SMmHL11VefNjthzJgxNG/enIceeoj4+HhDyWKb1+vl888/59JLLzUdJeZ07979tCUAdu7cSf369cOeJeqLRX5+Pl999dXJ4+zsbLZs2UJaWhr16tUzmCy2jB8/nrlz5/Lmm2+SkpLCgQMHAHC5XFSoUMFwutjx8MMP06tXLzIyMsjLy2P+/PmsXLnytFk5UjYpKSmnPR9UqVIlqlWrpueGguiBBx6gT58+1KtXj4MHDzJlyhQ8Hg+jR482HS3m3H///XTr1o2pU6dy0003sX79eqZPn8706dPDH8aKch988IEFnPYaPXq06Wgx5UzfMWDNmDHDdLSYcsstt1j169e3kpKSrBo1alhXX3219d5775mOVS5cfvnl1oQJE0zHiCmDBw+2atWqZSUmJlq1a9e2+vfvb23fvt10rJi1dOlSq1WrVpbT6bSaN29uTZ8+3UgObZsuIiIiQaOHN0VERCRoVCxEREQkaFQsREREJGhULERERCRoVCxEREQkaFQsREREJGhULERERCRoVCxEREQkaFQsREREJGhULERERCRoVCxEREQkaFQsREREJGj+P7/e5YXoNuajAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(X, f0(X), 'o')\n",
    "plt.plot(x, f0(x), '-')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "7bf3b714",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0000000002328306"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f1(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "fe992681",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f7821b2c0d0>]"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGsCAYAAAAPJKchAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA990lEQVR4nO3deXxU5d3///ckk0xYkqEJJCSQQFhFgsgiGBCVxWjkptJapaUKrl+puFJbRftV8WdNbcViS0FxgZuKyE1VhH6pEG8VFEElgCIguyRAQgjLTBIhJDPn98dhEmICJCHJmeX1fDzOY2ZOzpn5zGHCvHOd61yXzTAMQwAAABYJs7oAAAAQ2ggjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBSARVGVq9erTFjxigpKUk2m01Lliyp93MYhqEXXnhBPXr0kMPhUHJysp577rnGLxYAANSJ3eoC6qO0tFR9+/bV7bffrhtvvLFBz/Hggw9q5cqVeuGFF9SnTx+5XC4VFRU1cqUAAKCubIE6UZ7NZtN7772nsWPHVq47deqU/vCHP2jBggU6fvy40tLS9Pzzz+vqq6+WJG3btk2XXHKJvv32W/Xs2dOawgEAQDUBdZrmfG6//XatWbNGb7/9tr755hvddNNNuu6667Rz505J0rJly9SlSxf9+9//Vmpqqjp37qy77rpLR48etbhyAABCV9CEkd27d2vhwoVavHixhg0bpq5du+qRRx7RFVdcoblz50qS9uzZo3379mnx4sWaP3++5s2bp5ycHP3iF7+wuHoAAEJXQPUZOZcNGzbIMAz16NGj2vqysjLFxcVJkrxer8rKyjR//vzK7V5//XUNGDBA27dv59QNAAAWCJow4vV6FR4erpycHIWHh1f7WevWrSVJiYmJstvt1QJLr169JEm5ubmEEQAALBA0YaRfv37yeDwqLCzUsGHDat1m6NChqqio0O7du9W1a1dJ0o4dOyRJnTp1arZaAQBAlYC6mqakpES7du2SZIaPF198UcOHD1dsbKxSUlJ0yy23aM2aNZo+fbr69eunoqIiffTRR+rTp4+uv/56eb1eXXbZZWrdurVmzJghr9eryZMnKyYmRitXrrT43QEAEJoCKox88sknGj58eI31EydO1Lx581ReXq5nn31W8+fP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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(X, f1(X), 'o')\n",
    "plt.plot(x1, f1(x1), '-')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
